package br.com.vpsa.previdordevendas.controller;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import br.com.vpsa.previdordevendas.model.pojo.EntidadePojo;
import br.com.vpsa.previdordevendas.model.pojo.FaturamentoAnual;
import br.com.vpsa.previdordevendas.model.pojo.FaturamentoAnualForm;
import br.com.vpsa.previdordevendas.model.service.EntidadeService;
import br.com.vpsa.previdordevendas.model.service.PrevisaoManualService;
import br.com.vpsa.previdordevendas.model.util.BaseUtil;
import br.com.vpsa.previdordevendas.model.util.CalendarUtils;

@Controller
@RequestMapping("/previsao")
public class PrevisaoManualController {

	@Autowired
	private PrevisaoManualService previsaoManualService;
	
	@Autowired
	private EntidadeService entidadeService;

	@RequestMapping(method = RequestMethod.GET)
    public String get(Map<String, Object> map) 
	{
		return get(entidadeService.getIdEntidadePadrao(BaseUtil.getBase()), map);
	}	
	
	@RequestMapping(value="/{idEntidade}" ,method = RequestMethod.GET)
    public String get(@PathVariable Long idEntidade, Map<String, Object> map) 
	{
		List<EntidadePojo> entidades = entidadeService.listarTodas();
		
		if( idEntidade == null ){
			idEntidade = entidades.get(0).getId();
		}
		
		List<FaturamentoAnual> faturamentosAnuais = previsaoManualService.gerarPrevisaoAnual(BaseUtil.getBase(), idEntidade);
		
		map.put("faturamentoAnualForm", new FaturamentoAnualForm(idEntidade,faturamentosAnuais) );
		map.put("entidades",entidades);
		
		map.put("mesAtual", CalendarUtils.getMesAtual() );
		map.put("anoAtual", CalendarUtils.getAnoAtual() );

		return "previsao";
	}
	
	@RequestMapping(method = RequestMethod.POST)
	public String salvar( @ModelAttribute("faturamentoAnualForm") FaturamentoAnualForm faturamentoAnualForm, Map<String, Object> map )
	{
		previsaoManualService.salvarPrevisao(BaseUtil.getBase(), faturamentoAnualForm.getIdEntidade(), faturamentoAnualForm.getFaturamentosAnuais());
		
		map.put("mensagemSucesso", "Metas de Faturamento salvo com sucesso.");
		
		return get(faturamentoAnualForm.getIdEntidade(),map);
	}

}
